<?php

/**
 * mascota actions.
 *
 * @package    cronos-doctrine
 * @subpackage mascota
 * @author     Your name here
 * @version    SVN: $Id: actions.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
 */
class mascotaActions extends sfActions
{

  ///////////////////////////////*MASCOTA*///////////////////////////////////////

  //Muestra todos las mascotas
  public function executeIndex(sfWebRequest $request)
  {
    //Mostrar todas las Mascotas correspondiente al Usuario
    if ( ($request->isXmlHttpRequest()) && ($request->getParameter('idUser'))){
        $mascota = new Mascota();
        $this->mascotas = $mascota->getMascota($request->getParameter('idUser'));
        $this->idUser =  $request->getParameter('idUser');
        $this->parent =  $request->getParameter('parent');
        $this->delete =  $request->getParameter('delete');
    }
  }

  //Muesta el detalle de la Mascota Seleccionado
  public function executeShow(sfWebRequest $request)
  {
    $this->mascota = Doctrine_Core::getTable('Mascota')->find(array($request->getParameter('id')));
    $this->forward404Unless($this->mascota);
  }

  //Formulario para la creacion de un Nueva Mascota
  public function executeNew(sfWebRequest $request)
  {

    //Recibe la variable IdUser para poder asociarlo al usuario
     if ( ($request->isXmlHttpRequest()) && ($request->getParameter('idUser'))){
        //Busqueda del usuario por el Id
         $usuario = Doctrine_Core::getTable('Usuario')->find(array($request->getParameter('idUser')));
         //Armado del Objeto Mascota
         $mascota = new Mascota();
         $mascota->setUsuario($usuario);
         //Arma Formulario Mascota para el usuario en cuestion
         $this->form = new MascotaForm($mascota);
         $this->form->setWidget('usuario_id', new sfWidgetFormInputHidden(array(),array('value' => $request->getParameter('idUser'))));
         //Reasigna la variable usuario para su actualizacion luego Jquery
         $this->idUser = $request->getParameter('idUser');
         $this->parent =  $request->getParameter('parent');
     }
  }

  //Accion para crear el Nueva Mascota
  public function executeCreate(sfWebRequest $request)
  {
    //Redirecciona a la pagina de no encontrada
    $this->forward404Unless($request->isMethod(sfRequest::POST));

    //Crea un Nuevo Formulario para Mascota
    $this->form = new MascotaForm();
    $this->form->setWidget('usuario_id', new sfWidgetFormInputHidden(array(),array('value' => $request->getParameter('idUser'))));
    //Captura Variable Id Usuario
    $this->idUser =  $request->getParameter('idUser');
    $this->parent =  $request->getParameter('parent');

    //Reenvio Variable para el Procesado del Formulario
    $this->processForm($request, $this->form, $this->idUser,$this->parent);

    $this->setTemplate('new');
  }

  //Formulario para la Edicion de la mascota
  public function executeEdit(sfWebRequest $request)
  {
    //Redirecciona a la pagina de no encontradasi no encuentra el Id de la Mascota
    $this->forward404Unless($mascota = Doctrine_Core::getTable('Mascota')->find(array($request->getParameter('id'))), sprintf('Object mascota does not exist (%s).', $request->getParameter('id')));

    //Captura Variable Id Usuario
    $this->idUser =  $request->getParameter('idUser');
    $this->parent =  $request->getParameter('parent');
    //Arma Formulario Mascota para el usuario en cuestion
    $this->form = new MascotaForm($mascota);
            $this->form->setWidget('usuario_id', new sfWidgetFormInputHidden(array(),array('value' => $request->getParameter('idUser'))));
  }

  //Accion para edicion de la Mascota
  public function executeUpdate(sfWebRequest $request)
  {
    //Redirecciona a la pagina de no encontrada si no encuentra el Id de la mascota
    $this->forward404Unless($request->isMethod(sfRequest::POST) || $request->isMethod(sfRequest::PUT));
    $this->forward404Unless($mascota = Doctrine_Core::getTable('Mascota')->find(array($request->getParameter('id'))), sprintf('Object mascota does not exist (%s).', $request->getParameter('id')));

    //Captura Variable Id Usuario
    $this->idUser =  $request->getParameter('idUser');
    $this->parent =  $request->getParameter('parent');
     //Crea un Nuevo Formulario para mascota en cuestion
    $this->form = new MascotaForm($mascota);
    //Reenvio Variable para el Procesado del Formulario
    $this->processForm($request, $this->form, $this->idUser,$this->parent);

    $this->setTemplate('edit');
  }

  //Funcion para Borrar la Mascota
  public function executeDelete(sfWebRequest $request)
  {
    //Verifica la proteccion del formulario
    //$request->checkCSRFProtection();
    $this->idUser =  $request->getParameter('idUser');
    $this->parent =  $request->getParameter('parent');
    $this->delete =  true;
    //Redirecciona a la pagina de no encontradasi no encuentra el Id de la mascota
    $this->forward404Unless($mascota = Doctrine_Core::getTable('Mascota')->find(array($request->getParameter('id'))), sprintf('Object mascota does not exist (%s).', $request->getParameter('id')));

    //Elimina la mascota y redirecciona al Index de la Mascota
    $mascota->delete();

    $this->redirect('mascota/index?idUser='.$this->idUser."&parent=".$this->parent."&delete=".$this->delete);
  }

  //Funcion para el procesamiento o guardado del Formulario y Objeto Mascota
  protected function processForm(sfWebRequest $request, sfForm $form,$idUser,$parent)
  {
    $form->bind($request->getParameter($form->getName()), $request->getFiles($form->getName()));
    if ($form->isValid())
    {
      $mascota = $form->save();

      $this->redirect('mascota/edit?id='.$mascota->getId()."&idUser=".$idUser."&parent=".$parent);
    }
  }
  
  public function executeAddDetForm(sfWebRequest $request)
  {
      $this->forward404unless($request->isXmlHttpRequest());
      $number = intval($request->getParameter("num"));

      $deta = $mascota = Doctrine_Core::getTable('Mascota')->find($request->getParameter('id'));
      if(!is_null($deta)){
            $form = new MascotaForm($mascota);;
      }else{
            $form = new MascotaForm();
      }
            
      $form->addDetalle($number);
      
      
      return $this->renderPartial('addDet',array('form' => $form, 'num' => $number));
  }
  
  public function executeDelDetForm(sfWebRequest $request)
  {
    $this->forward404Unless($mascota = Doctrine_Core::getTable('Mascota')->find(array($request->getParameter('id'))), sprintf('Object galeria does not exist (%s).', $request->getParameter('id')));
    
    try {
           $mascota->delete();
           $this->getUser()->setFlash('notice', 'El Item fué removido exitosamente.'); 
          
      } catch (Doctrine_Exception $e) {
          $this->getUser()->setFlash('error', 'No se puedo eliminar el item, existen referencias a esta entrada.'); 
          
      }
  }
}
